Global

Column

Carbon-dioxide concentration

Global mean temperature difference from 1850-1900

Row

Global ocean heat content difference from 1981-2010

Global sea level difference from 1981-2010

United Kingdom & London

Column

UK annual mean air temperature

Great Britain sea level from tide gauges

Row

London annual maximum and minimum air temperature

London annual mean precipitation

London annual mean wind speed

---
title: "Climate Change Dashboard"
output: 
  flexdashboard::flex_dashboard:
    source_code: embed
---

```{r setup, include=FALSE}
library(dygraphs)
library(xts)
library(lubridate)
library(dplyr)
library(tidyr)
library(leaflet)
library(sp)
library(raster)
library(mapview)
library(leafsync)

#author: Wanda Bodnar

## Data sources: 
#https://climate.metoffice.cloud/dashboard.html,
#https://www.metoffice.gov.uk/pub/data/weather/uk/climate/datasets/Tmean/date/UK.txt,
#https://www.metoffice.gov.uk/pub/data/weather/uk/climate/stationdata/heathrowdata.txt,
##https://www.kaggle.com/datasets/noahx1/london-weather-2000-2023,
#https://psmsl.org/data/, 
#https://www.sciencedirect.com/science/article/pii/S0079661121000112?via%3Dihub#s0180, 
```

Global
=====================================

Column {data-width=500}
-------------------------------------
### Carbon-dioxide concentration

```{r}
mauna <- read.csv(url("https://climate.metoffice.cloud/formatted_data/co2_Mauna%20Loa%20CO2.csv"))
mauna$Year <- as.numeric(mauna$Year)
mauna <- mauna %>%
  group_by(Year) %>%
  dplyr::summarize(Mean_Mauna = mean(Mauna.Loa.CO2..ppm., na.rm = TRUE))

NOAA <- read.csv(url("https://climate.metoffice.cloud/formatted_data/co2_NOAA%20CO2.csv"))
NOAA$Year <- as.numeric(NOAA$Year)
NOAA <- NOAA %>%
  group_by(Year) %>%
  dplyr::summarize(Mean_NOAA = mean(NOAA.CO2..ppm., na.rm = TRUE))

WDCGG <- read.csv(url("https://climate.metoffice.cloud/formatted_data/co2_WDCGG%20CO2.csv"))
WDCGG$Year <- as.numeric(WDCGG$Year)
WDCGG <- WDCGG %>%
  group_by(Year) %>%
  dplyr::summarize(Mean_WDCGG = mean(WDCGG.CO2..ppm., na.rm = TRUE))

carbon <- merge(mauna, NOAA, by = "Year", all = T)

carbon <- merge(carbon, WDCGG, by = "Year")

names(carbon)[names(carbon) == "Mean_Mauna"] <- "Mauna Loa"
names(carbon)[names(carbon) == "Mean_NOAA"] <- "NOAA"
names(carbon)[names(carbon) == "Mean_WDCGG"] <- "WDCGG"

dygraph(carbon, main = "") %>%
  dyOptions(colors = RColorBrewer::brewer.pal(3, "Set3")) %>%
  dyOptions(fillGraph = TRUE, fillAlpha = 0.1) %>%
  dyAxis("y", label = "Parts per million (ppm)") %>%
  dyRangeSelector() 
```

### Global mean temperature difference from 1850-1900

```{r}
HadCRUT5 <- read.csv(url("https://climate.metoffice.cloud/formatted_data/gmt_HadCRUT5.csv"))
HadCRUT5$Year <- as.numeric(HadCRUT5$Year)

NOAA <- read.csv(url("https://climate.metoffice.cloud/formatted_data/gmt_NOAAGlobalTemp.csv"))
NOAA$Year <- as.numeric(NOAA$Year)

berkeley <- read.csv(url("https://climate.metoffice.cloud/formatted_data/gmt_Berkeley%20Earth.csv"))
berkeley$Year <- as.numeric(berkeley$Year)

temp <- merge(HadCRUT5, NOAA, by = "Year", all = T)

temp <- merge(temp, berkeley, by = "Year", all = T)

temp <- subset(temp, select= -c(HadCRUT5.uncertainty, NOAAGlobalTemp.uncertainty, Berkeley.Earth.uncertainty))

names(temp)[names(temp) == "HadCRUT5..degC."] <- "Met Office"
names(temp)[names(temp) == "NOAAGlobalTemp..degC."] <- "NOAA"
names(temp)[names(temp) == "Berkeley.Earth..degC."] <- "Berkeley Earth"

dygraph(temp, main = "") %>%
  dyOptions(colors = RColorBrewer::brewer.pal(3, "Dark2")) %>%
  dyOptions(fillGraph = TRUE, fillAlpha = 0.1) %>%
  dyAxis("y", label = "Temperature (°C)") %>%
  dyRangeSelector() 
```   

Row {data-height=500}
-------------------------------------

### Global ocean heat content difference from 1981-2010

```{r}
EN.4.2.2.c14 <- read.csv(url("https://climate.metoffice.cloud/formatted_data/ohc_EN.4.2.2.c14.csv"))
EN.4.2.2.c14$Year <- as.numeric(EN.4.2.2.c14$Year)

Levitus <- read.csv(url("https://climate.metoffice.cloud/formatted_data/ohc_Levitus.csv"))
Levitus$Year <- as.numeric(Levitus$Year)

EN.4.2.2.c13 <- read.csv(url("https://climate.metoffice.cloud/formatted_data/ohc_EN.4.2.2.c13.csv"))
EN.4.2.2.c13$Year <- as.numeric(EN.4.2.2.c13$Year)

EN.4.2.2.g10 <- read.csv(url("https://climate.metoffice.cloud/formatted_data/ohc_EN.4.2.2.g10.csv"))
EN.4.2.2.g10$Year <- as.numeric(EN.4.2.2.g10$Year)

EN.4.2.2.l09 <- read.csv(url("https://climate.metoffice.cloud/formatted_data/ohc_EN.4.2.2.l09.csv"))
EN.4.2.2.l09$Year <- as.numeric(EN.4.2.2.l09$Year)

IAP <- read.csv(url("https://climate.metoffice.cloud/formatted_data/ohc_IAP.csv"))
IAP$Year <- as.numeric(IAP$Year)

JMA <- read.csv(url("https://climate.metoffice.cloud/formatted_data/ohc_JMA.csv"))
JMA$Year <- as.numeric(JMA$Year)

oceanheat <- merge(EN.4.2.2.c14, Levitus, by = "Year", all = T)

oceanheat <- merge(oceanheat, EN.4.2.2.c13, by = "Year", all = T)

oceanheat <- merge(oceanheat, EN.4.2.2.g10, by = "Year", all = T)

oceanheat <- merge(oceanheat, EN.4.2.2.l09, by = "Year", all = T)

oceanheat <- merge(oceanheat, IAP, by = "Year", all = T)

oceanheat <- merge(oceanheat, JMA, by = "Year", all = T)

oceanheat <- subset(oceanheat, select= -c(EN.4.2.2.c14.uncertainty, 
                                        Levitus.uncertainty,
                                        EN.4.2.2.c13.uncertainty,
                                        EN.4.2.2.g10.uncertainty,
                                        EN.4.2.2.l09.uncertainty,
                                        IAP.uncertainty,
                                        JMA.uncertainty))

names(oceanheat)[names(oceanheat) == "EN.4.2.2.c14..10ZJ."] <- "EN.4.2.2.c14"
names(oceanheat)[names(oceanheat) == "Levitus..10ZJ."] <- "Levitus"
names(oceanheat)[names(oceanheat) == "EN.4.2.2.c13..10ZJ."] <- "EN.4.2.2.c13"
names(oceanheat)[names(oceanheat) == "EN.4.2.2.g10..10ZJ."] <- "EN.4.2.2.g10"
names(oceanheat)[names(oceanheat) == "EN.4.2.2.l09..10ZJ."] <- "EN.4.2.2.l09"
names(oceanheat)[names(oceanheat) == "IAP..10ZJ."] <- "IAP"
names(oceanheat)[names(oceanheat) == "JMA..10ZJ."] <- "JMA"

dygraph(oceanheat, main = "") %>%
  dyOptions(colors = RColorBrewer::brewer.pal(7, "Dark2")) %>%
  dyOptions(fillGraph = TRUE, fillAlpha = 0.1) %>%
  dyAxis("y", label = "10<sup>22</sup> Joules") %>%
  dyRangeSelector() 
```

### Global sea level difference from 1981-2010

```{r}
palmer <- read.csv(url("https://climate.metoffice.cloud/formatted_data/sea_level_lt_Palmer%20et%20al.%202021.csv"))
palmer$Year <- as.numeric(palmer$Year)

CW2011 <- read.csv(url("https://climate.metoffice.cloud/formatted_data/sea_level_lt_CW2011.csv"))
CW2011$Year <- as.numeric(CW2011$Year)

HA2015 <- read.csv(url("https://climate.metoffice.cloud/formatted_data/sea_level_lt_HA2015.csv"))
HA2015$Year <- as.numeric(HA2015$Year)

DA2019 <- read.csv(url("https://climate.metoffice.cloud/formatted_data/sea_level_lt_DA2019.csv"))
DA2019$Year <- as.numeric(DA2019$Year)

FR2020 <- read.csv(url("https://climate.metoffice.cloud/formatted_data/sea_level_lt_FR2020.csv"))
FR2020$Year <- as.numeric(FR2020$Year)

sealevel <- merge(palmer, CW2011, by = "Year", all = T)

sealevel <- merge(sealevel, HA2015, by = "Year", all = T)

sealevel <- merge(sealevel, DA2019, by = "Year", all = T)

sealevel <- merge(sealevel, FR2020, by = "Year", all = T)

sealevel <- subset(sealevel, select= -c(Palmer.et.al..2021.uncertainty, 
                                          CW2011.uncertainty,
                                          HA2015.uncertainty,
                                          DA2019.uncertainty,
                                          FR2020.uncertainty))

names(sealevel)[names(sealevel) == "Palmer.et.al..2021..mm."] <- "Palmer et al. 2021"
names(sealevel)[names(sealevel) == "CW2011..mm."] <- "CW2011"
names(sealevel)[names(sealevel) == "HA2015..mm."] <- "HA2015"
names(sealevel)[names(sealevel) == "DA2019..mm."] <- "DA2019"
names(sealevel)[names(sealevel) == "FR2020..mm."] <- "FR2020"

dygraph(sealevel, main = "") %>%
  dyOptions(colors = RColorBrewer::brewer.pal(5, "Set2")) %>%
  dyOptions(fillGraph = TRUE, fillAlpha = 0.1) %>%
  dyAxis("y", label = "Milimetres (mm)") %>%
  dyRangeSelector() 
``` 


United Kingdom & London
=====================================

Column {data-width=500}
-------------------------------------
### UK annual mean air temperature
```{r}

setwd("C:/Users/bodna/Documents/Work/Roadmap to Climate Resilience/Working folder/Data")

uk <- read.csv("uk_temp.csv")

dygraph(uk, main = "") %>% 
  dySeries("ann", label = "°C") %>%
  dyOptions(fillGraph = TRUE, fillAlpha = 0.1) %>%
  dyAxis("y", label = "Temperature (°C)") %>%
  dyLegend(show = "always", hideOnMouseOut = T) %>%
  dyRangeSelector() 
```

### Great Britain sea level from tide gauges
```{r}

setwd("C:/Users/bodna/Documents/Work/Roadmap to Climate Resilience/Working folder/Data/sea level")

sea <- read.csv("uk2.csv")

dygraph(sea, main = "") %>% 
  dySeries("mm", label = "mm", color = "lightblue") %>%
  dyAxis("y", label = "Sea level (mm)") %>%
  dyOptions(fillGraph = TRUE, fillAlpha = 0.8) %>%
  dyLegend(show = "always", hideOnMouseOut = T) %>%
  dyRangeSelector() 
```

Row {data-height=500}
-------------------------------------

### London annual maximum and minimum air temperature
```{r}
setwd("C:/Users/bodna/Documents/Work/Roadmap to Climate Resilience/Working folder/Data")

london <- read.csv("london.csv")

london_monthly_combined <- london %>%
  group_by(year) %>%
  summarise(across(c(tmax, tmin), mean, na.rm=TRUE))

dygraph(london_monthly_combined, main = "") %>% 
  dySeries("tmax", label = "Max temperature", color = "red") %>%
  dySeries("tmin", label = "Min temperature", color = "blue") %>%
  dyAxis("y", label = "Temperature (°C)") %>%
  dyLegend(show = "always", hideOnMouseOut = T) %>%
  dyRangeSelector() 
```

### London annual mean precipitation
```{r}
setwd("C:/Users/bodna/Documents/Work/Roadmap to Climate Resilience/Working folder/Data")

london <- read.csv("london.csv")

london_monthly_combined <- london %>%
  group_by(year) %>%
  summarise(across(c(rain_mm), mean, na.rm=TRUE))

dygraph(london_monthly_combined, main = "") %>% 
  dySeries("rain_mm", label = "mm", color = "darkblue") %>%
  dyAxis("y", label = "Rain (mm)") %>%
  dyOptions(fillGraph = TRUE, fillAlpha = 0.1) %>%
  dyLegend(show = "always", hideOnMouseOut = T) %>%
  dyRangeSelector() 
```

### London annual mean wind speed
```{r}
setwd("C:/Users/bodna/Documents/Work/Roadmap to Climate Resilience/Working folder/Data")

wind <- read.csv("wind.csv")

wind_combined <- wind %>%
  group_by(Year) %>%
  summarise(across(c(wspd), mean, na.rm=TRUE))

dygraph(wind_combined, main = "") %>% 
  dySeries("wspd", label = "km/h", color = "green") %>%
  dyAxis("y", label = "Wind speed (km/h)") %>%
  dyOptions(fillGraph = TRUE, fillAlpha = 0.1) %>%
  dyLegend(show = "always", hideOnMouseOut = T) %>%
  dyRangeSelector() 
```